package org.domain.sigepac.session;

import java.util.List;

import org.domain.sigepac.Utils;
import org.domain.sigepac.Entity.CadastroReserva;
import org.domain.sigepac.Entity.Curso;
import org.domain.sigepac.Entity.Turma;
import org.domain.sigepac.repository.RepositorioAluno;
import org.domain.sigepac.repository.RepositorioCadastroReserva;
import org.domain.sigepac.repository.RepositorioCurso;
import org.domain.sigepac.repository.RepositorioTurma;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jboss.seam.international.StatusMessages;

@Name("cursoList")
@Scope(ScopeType.CONVERSATION)
public class CursoList {

	@In
	private StatusMessages statusMessages;

	@In
	private RepositorioCurso repositorioCurso;

	@In
	private RepositorioAluno repositorioAluno;


	@DataModel
	private List<Curso> listaCursos;

	@DataModelSelection
	private Curso curso;

	private CadastroReserva cadastroReserva;

	private Turma turma;

	@Out(required=false)
	private Curso cursoPesquisa;


	private Integer paginacao=10;

	@Factory("listaCursos")
	public void listar(){

		listaCursos= repositorioCurso.listar();

	}

	public void pesquisar(){
		listaCursos=repositorioCurso.pesquisarPorNome(getCursoPesquisa().getNome());
	}

	public void apagar(){
		if(curso.getTurmas().size()==0){
			repositorioCurso.excluir(curso);
			Utils.entityManagerFlush();
			statusMessages.add("Curso exclu\u00eddo com sucesso!");
		}else
		{
			statusMessages.add("N\u00e3o foi poss\u00edvel excluir o Curso pois existem turmas vinculadas a ele");
		}
	}

	public void adicionarNaTurma(){

		cadastroReserva.getAluno().getTurmas().add(turma);
		repositorioAluno.atualizar(cadastroReserva.getAluno());
		curso.getCadastrosReserva().remove(cadastroReserva);
		Utils.entityManagerFlush();
	}


	public Integer getPaginacao() {
		return paginacao;
	}

	public Curso getCursoPesquisa() {
		if(cursoPesquisa==null)
			cursoPesquisa=new Curso();
		return cursoPesquisa;
	}

	public void setCursoPesquisa(Curso cursoPesquisa) {
		this.cursoPesquisa = cursoPesquisa;
	}

	public Curso getCurso() {
		return curso;
	}
	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public CadastroReserva getCadastroReserva() {
		return cadastroReserva;
	}
	public void setCadastroReserva(CadastroReserva cadastroReserva) {
		this.cadastroReserva = cadastroReserva;
	}
	public Turma getTurma() {
		return turma;
	}
	public void setTurma(Turma turma) {
		this.turma = turma;
	}
}
